845bc00381fad92bdd8b9575c2a19b1b9f9c2a98,jdt-patch/e43/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/MemberValuePair.java,MemberValuePair,repairClassLiteralReference,#Expression#BlockScope#TypeBinding[]#,82
Before Change
private Expression repairClassLiteralReference(Expression exp, BlockScope scope, TypeBinding[] valueType) {
TypeBinding vtb = null;
if (exp instanceof SingleNameReference) {
vtb = exp.resolveType(scope);
SingleNameReference ref = (SingleNameReference) exp;
if (vtb != null && Arrays.equals(ref.token, vtb.sourceName())) {
return new ClassLiteralAccess(ref.sourceEnd, new SingleTypeReference(ref.token, ((long) ref.sourceStart) << 32 | ref.sourceEnd));
}
} else if (this.value instanceof QualifiedNameReference) {
vtb = exp.resolveType(scope);
QualifiedNameReference ref = (QualifiedNameReference) exp;
if (vtb != null && Arrays.equals(ref.tokens[ref.tokens.length - 1], vtb.sourceName())) {
return new ClassLiteralAccess(ref.sourceEnd, new QualifiedTypeReference(ref.tokens, ref.sourcePositions));
}
}
if (valueType != null) {
After Change
private static Expression repairClassLiteralReference(Expression exp, BlockScope scope) {
if (exp instanceof SingleNameReference) {
if (exp.resolveType(scope) != null) {
SingleNameReference ref = (SingleNameReference) exp;
return new ClassLiteralAccess(ref.sourceEnd, new SingleTypeReference(ref.token, ((long) ref.sourceStart) << 32 | ref.sourceEnd));
}
} else if (exp instanceof QualifiedNameReference) {
if (exp.resolveType(scope) != null) {
QualifiedNameReference ref = (QualifiedNameReference) exp;
return new ClassLiteralAccess(ref.sourceEnd, new QualifiedTypeReference(ref.tokens, ref.sourcePositions));
}
}
return exp;